使用可视化着色器
IVRVisualScript是喜欢用图形化方法进行编码的用户的选择,而VisualShader则是创建着色器的可视化选择。
由于着色器本质上与视觉效果有联系,与纯粹基于脚本的着色器相比,基于图的方式,可以看到纹理,材质的预览,这提供了很多额外的便利。而另一方面,VisualShaders并没有暴露出着色器脚本的所有功能,所以对于一些特定的效果,有必要同时使用这两者。
创建VisualShader
关于可视化着色器的创建可参考IdeaXR中着色器的使用
创建成功后会弹出一个可视化着色器的编辑界面:
Visual Shader 编辑器的布局包括两部分:上层工具栏和图表本身。
在上方工具栏中从左到右:
添加节点 按钮会显示一个弹出式菜单,让你为着色器图添加节点。
下拉菜单是着色器类型。顶点,片段和光线,和脚本着色器一样,它定义了哪些内置节点将是可用的。
下面的按钮和数字输入控制缩放级别, 网格捕捉和网格线之间的距离(单位为像素)。
最后一个图标显示了与你的图表对应生成的着色器代码。
使用VisualShader编辑器
创建可视化着色器后,你可以在着色器的属性界面设置shader_type和rander_mode。
默认情况下,每个新的 VisualShader 都会有一个输出(output)节点。你所做的就是设计计算需要输出的属性的值,然后连接到对应属性的引脚上,以达到你想要的效果。在可视化着色器中,节点是基本单元。要添加一个新的节点,点击左上角的添加节点
按钮,或者在图形中的任何一个空的位置上右击,就会弹出一个菜单。
如果你是点击鼠标右键调出的节点菜单界面,那么这个菜单会出现在你鼠标光标的位置,双击创建的节点也是在光标位置,你也可以长按鼠标左键将节点拖到指定位置创建。
虽然弹出的节点是按类别分类的,但一开始会不知所以。试着添加一些节点,将它们连接到输出,观察会发生什么。
当把任何scalar
输出连接到vector
输入时,向量的所有分量将取标量的值。
当把任何vector
输出连接到scalar
输入时,标量的值将是向量分量的平均值。
可视化着色器节点介绍
接下来将介绍一些常用的,值得了解的可视化着色器节点。
Input节点
Input
节点包含了当前着色器类型下的内置属性
Operator类型节点
可根据输入的类型指定相关的操作符节点:
以标量节点为例,创建节点后可以选择相关操作符:
Function类型节点
与Operator类型节点类似,可根据输入的类型指定相关的函数节点:
以标量节点为例,创建节点后可以选择相关操作符:
Expression节点
Expression
节点允许你在可视化着色器中使用IdeaXR着色语言。该节点具有添加任意数量的所需输入和输出端口的按钮。你还可以设置每个端口的名称和类型。你可以编写复杂的过程,并使用基于文本的着色器的全部功能,例如循环,关键字discard,扩展类型,等等。
Boolean节点
Boolean
节点可以转换为或 Scalar
或 Vector
, 分别表示 0
或 1
和 (0, 0, 0) 或 (1, 1, 1) . 该属性可用于一键启用或禁用某些效果部件.
If 节点
If
节点允许你设置一个向量,它将返回 a
和 b
之间的比较结果。有三个向量可以返回: a == b
(在这种情况下,容差参数(tolerance)是作为比较阈值提供的--默认情况下它等于最小值。即 0.00001 ),a > b
和 a < b
。
Switch节点
如果布尔条件是true
或false
,Switch
节点返回一个向量。Boolean
在上面介绍过。如果你把一个向量转换为真布尔值,那么向量的所有分量都应该高于零。